package codeRandomThoughts.Test98验证二叉搜索树;

import codeRandomThoughts.utils.TreeNode;

public class Solution3 {
    Integer pre;//用于记录上一个节点的值

    //二叉搜索树中序遍历一定是递增的
    //因此只需要判断当前节点的值比上一个大就好
    public boolean isValidBST(TreeNode root) {
        if (root == null) return true;
        //中序遍历 左根右
        boolean leftValid = isValidBST(root.left);

        //如果当前值小于等于上一个节点的值,说明不符合二叉搜索树条件
        if (pre != null && root.val <= pre) return false;
        pre = root.val;//更新pre的值

        boolean rightValid = isValidBST(root.right);

        //左右子树都是二叉搜索树,返回true
        return leftValid && rightValid;
    }
}
